Mesh networking is a way to route data and instructions between nodes. A node can be any device connected to a computer network. Nodes can be computers, routers, or various other networked devices. On a TCP/IP network, a node is any device with an Internet Protocol (IP) address. Mesh networking allows for continuous connections and reconfiguration around broken or blocked paths by “hopping” from node to node until the destination is reached. Mesh networks differ from other networks in that the component parts can all connect to each other via multiple hops, and they generally are not mobile devices. In a packet-switching network, a hop is the trip a data packet takes from one router or intermediate node in a network to another node in the network. On the Internet (or a network that uses TCP/IP), the number of hops a packet has taken toward its destination (called the “hop count”) is kept in the packet header.
Wireless mesh networks employ intelligent nodes typically including a wireless (e.g. radio) transmitter and receiver, a power source, input devices, sometimes output devices, and an intelligent controller, such as a programmable microprocessor controller with memory. In the past, wireless mesh networks have been developed having configurations or networks for communication that are static, dynamic or a hybrid of static and dynamic. Power for these networks has been supplied either via wires (the nodes are “plugged in”) or from batteries in each node. As the size, power, and cost of the computation and communication requirements of these devices has decreased over time, battery-powered wireless nodes have gotten smaller; yet, the computing demands on the wireless nodes have increased.
Wireless sensor networks are finding applications in a wide range of areas, including disaster recovery, homeland security, infrastructure monitoring, habitat monitoring, and pervasive computing environments. Wireless sensor network technology can be used for deploying sensors as nodes in a variety of different environments for monitoring diverse parameters such as, for example, temperature, pressure, particle counts, and humidity. These types of networks can be denoted wireless sensor networks (WSN). A wireless sensor network is typically comprised of a collection of devices embedded in a physical environment which gather information, perform local computations, and communicate with other devices and hosts through a wireless network.
Wireless sensor networks pose unique challenges for software developers compared to other forms of software construction; because, the devices that comprise wireless sensor networks have limited amounts of memory, processing capability, and battery power. As a result, wireless sensor network research has created designs for a wide variety of highly-efficient hardware platforms specialized to perform specific tasks. The wide variety of such platforms creates a considerable burden for the programmer, who needs to be aware of the idiosyncrasies of each specific platform.
Over time, as the installed base of sensor networks grows, the need to support applications across heterogeneous devices and platforms will continue to grow. The capabilities of the system software used during development of applications for wireless sensor networks can greatly affect the complexity of implementing wireless sensor networks. However, existing techniques for developing such applications have so far only focused on developing applications for a single platform.
U.S. Patent Application Publication No. 2006/0161909 describes a method and a system for synthesizing a scalable and incrementally updatable system software infrastructure for sensor networks. During operation, the system receives a specification for an application and a specification for target devices. The system analyzes these specifications in order to identify a set of software components required to support the application, and then proceeds to synthesize a customizable software stack that accommodates the identified set of software components on a specified target device. This process generates a minimal, resource-efficient software stack for a specific application on the specified target device.
Building distributed WSN applications has been extremely difficult as it requires mechanisms for addressing extreme heterogeneity among embedded devices and enterprise systems, for developing software stacks that fit on highly resource constrained embedded devices, and for integrating different software components that use different forms of networking technology, (such as 802.15.4, TCP/IP, local area networking and Web-based systems) to communicate with each other.
Currently, most application developers use an ad hoc approach to building such applications. These conventional approaches typically involve manually developing and assembling the following components: (i) low level implementation of applications on embedded devices, (ii) data collection software that acts as bridge software between the sensor network and the enterprise world, (iii) utility software (such as database storage, visualization and alert system, etc), (iii) bridge software for transcoding between different networking models and protocols, and (iv) serialization/de-serialization software at both the embedded system end and the analysis processing and enterprise application end. Such a build-and-assemble approach has several weaknesses: 1) Data inconsistency: Different software components may use different data models, thereby introducing inconsistency across the entire system. This will lead to incorrect data collection and analysis; 2) Code duplication: The manual effort duplicates much of the data processing and data communication code. This is time consuming and error prone; 3) Limited remote control support: The manual approach limits the kinds of remote control that can be supported; 4) Limited extensibility: The manual effort limits the number of service components that can be easily added to the system; 5) Manual development: The approach requires manual development of a large portion of the application, which entails significant effort and cost, and is error prone; and 6) Device-specific development: The development approach tends to be specific to a device. This requires significant re-development effort if heterogeneous sets of devices and gateways are used.
Thus, an apparatus and method for building integrated distributed applications for use with a mesh network are needed.